namespace GemBox.Spreadsheet
{
    using System;
    using System.Data;
    using System.Data.Common;

    public class ExtractDataDelegateEventArgs : EventArgs
    {
        private ExtractDataEventAction action;
        private DataTable dataTable;
        private int dataTableRow;
        private object dataTableValue;
        private ExtractDataError errorID;
        private ExcelRow excelRow;
        private object excelValue;
        private DataColumnMapping mapping;

        internal ExtractDataDelegateEventArgs(ExtractDataError errorID, DataColumnMapping mapping, ExcelRow excelRow, DataTable dataTable, int dataTableRow, object excelValue, object dataTableValue, ExtractDataEventAction action)
        {
            this.errorID = errorID;
            this.mapping = mapping;
            this.excelRow = excelRow;
            this.dataTable = dataTable;
            this.dataTableRow = dataTableRow;
            this.excelValue = excelValue;
            this.dataTableValue = dataTableValue;
            this.action = action;
        }

        public ExtractDataEventAction Action
        {
            get
            {
                return this.action;
            }
            set
            {
                this.action = value;
            }
        }

        public int DataTableRow
        {
            get
            {
                return this.dataTableRow;
            }
        }

        public object DataTableValue
        {
            get
            {
                return this.dataTableValue;
            }
            set
            {
                this.dataTableValue = value;
            }
        }

        public DataTable DestinationTable
        {
            get
            {
                return this.dataTable;
            }
        }

        public ExtractDataError ErrorID
        {
            get
            {
                return this.errorID;
            }
        }

        public object ExcelValue
        {
            get
            {
                return this.excelValue;
            }
        }

        public DataColumnMapping Mapping
        {
            get
            {
                return this.mapping;
            }
        }

        public ExcelRow WorksheetRow
        {
            get
            {
                return this.excelRow;
            }
        }
    }
}
